#ifndef ABSORB_MATERIAL_H
#define ABSORB_MATERIAL_H

#include <algorithm/shared/data/topology/material/Material.h>
#include <utils/ParaUtils.h>

namespace solar
{
    // Absorb：仅吸收
    class Absorb : public Material
    {
        public:
            virtual ~Absorb() = default;
            Absorb() = default;
            [[nodiscard]] auto getType() const -> MaterialType override;

#include <utils/class_name.inc>

        private:
            double absorptivity_{1}; // 吸收率，默认为1，但是可以更改

            MaterialType type_{};
            BOOST_DESCRIBE_CLASS(solar::Absorb, (solar::Material), (), (), (absorptivity_, type_))
    };

} // namespace solar
#define CURRENT_CLASS_NAME Absorb
#include <utils/class_describe_header.inc>
SOLAR_DESCRIBE_CLASS(Absorb, (Material), (), (), (absorptivity_, type_))
#endif
